Field of Technology
This disclosure relates to Computer Aided Design (CAD), and more specifically to a multi-user three-dimensional online CAD system.
Background
Computer aided design (CAD) is a type of software that enables users to design real-world objects, such as machines and other commercial products. Typical CAD users are designers or engineers from businesses or individuals that want to precisely and efficiently create product designs which represent physical objects.
There is a long history of development behind CAD, as design software allows features and functionality beyond the scope and capability of draftsmen working on paper. CAD software can design in two dimensions (2D CAD) or three dimensions (3D CAD). Since 1988, with launch of Pro/ENGINEER, parametric solid modeling has emerged as a mainstream technology for design tools. The basic capability of all parametric solid modeling systems is to allow users to change dimensions (and other parameters such as directions and definitions) of features being generated, allowing the models to be changed. A parametric model in a CAD system is represented by a data structure that in its most basic form is a linear set of features (such as sketches, extrusions, fillets) that are executed in order to create the model. These features define the eventual shape of parts. This is usually called a “parametric history” or “feature list” in products such as PTC's Creo, Dassault Systems' Solidworks, and Autodesk's Inventor. The parametric history is created through a user interface by directly applying features to the 3D CAD parts.
Prior parametric feature-based 3D CAD systems are generally designed for a single user to use at one time. If users work in teams with other users, either copies of a CAD system must be installed on each user's computer, or users need to use a separate collaboration server that works independently of the master CAD model. CAD data must be copied to each user's computer, or to and from a collaboration server. Users must be ever-vigilant to be certain they are not over-writing each other's changes and that they are looking at the current latest version of a CAD model. CAD software and separate collaboration servers need to perform complex tasks to convey changes back and forth between the collaboration servers and the master CAD model.
Existing parametric feature-based 3D CAD systems are generally designed around the use of many files. Each CAD part, assembly, and drawing are typically stored in individual data files in a computer's file system. If users work in teams with other users on a design, copies of all relevant files, CAD and otherwise, are copied to each user's computer. If a new file is introduced, for example for a new part, that file must be copied to all CAD users who need it. If the design needs to be versioned to save a specific state, then all of the many files need to be versioned. External systems such as product data management (PDM) servers are usually needed to perform version control and associate together the many individual files comprising a product design.
Even with external solutions like PDM servers, collaborating and synchronizing work is challenging. A team of designers may wish to collaborate on designing a model, in such a way that each designer works on one part of the model without interference from his or her teammates. When one or all of the designers are finished with their specific tasks, each of their work products must somehow be incorporated into the finished model. Existing CAD systems usually do not provide any real mechanism to do this. Either the model must be subdivided in advance (e.g. as different parts in an assembly), which is not always practical or possible, or each designer's work has to be manually and laboriously re-created in the final design.
Similarly, a designer or team of designers may wish to experiment with a number of different design alternatives to each of several different aspects of a design. The designer(s) may want to mix and match alternatives of different pieces of the model, and as above will need to merge the chosen alternatives together into a final model. This is a challenging exercise under existing CAD systems, which generally lack such enabling tools. It can sometimes be possible to do simple merging of geometry, for example using “boolean” operations, but that only combines the geometry and not the parametric histories or feature lists.
In software development (as opposed to CAD model development), visual comparison and merge tools such as Araxis Merge and Perforce's p4merge are standard. These tools allow a software developer to compare the textual representation of two versions of the same software source code side by side on a line by line basis (lines of code). The differences are highlighted in a color coded manner (new lines, removed lines, modified lines are each different colors). Since the format of the lines of code are very familiar, the software developer can immediately understand what has changed and can incrementally choose to transfer changes from one version to the other. This is true whether the developer is looking at code he or she wrote or code written by others. This methodology is useful both to a software developer working alone and to software developers working in teams. It is also standard practice to use such tools in code reviews.
Some integrated development environments (IDE's) analyze the program structure and display a graphical version of it. They may allow basic editing operations through the graphical version. Some CAD systems, such as SolidWorks, allow embedding programs into the feature history. The entire program is represented as a single feature and the structure of the program is not tied to the user interface. OpenSCAD is a CAD system based on a programming language, but it does not support viewing or editing the model via a non-text-based UI. Thus, CAD development tools lack the functionality and capability of software development tools when it comes to visually comparing or merging development efforts.
CAD systems involve complex solvers to calculate models from parameters and features configured by the user. Most CAD systems include a sketcher, which is a portion of the software that can allows users to create and manipulate curves and geometries in two or three dimensions. Such sketchers include complex relationships which are non-trivial to compute and typically use a commercially available component or other complex library to evaluate. In existing CAD applications that are resident on the user's computer such calculations can be performed and results returned in near real time. However, this requires sufficient processing power on the local machine, and geometric data on the local machine to compute geometries while sketching. As a result, multiple issues exist when moving to a client-server model.
In addition, CAD systems often compute inferences about relationships between various geometric entities to aid user design while sketching. Traditional CAD inferencing performs calculations on a local machine as a user moves the mouse on the screen. With all calculations being on the local machine, any delays with mouse movement can be kept short. However, even with a reasonable powerful machine and local machine calculations, inferencing delays with complex sketches or models may become noticeable.
In a client-server CAD architecture, there are multiple approaches. A simple approach performs all inferencing on the server, where the data and processing power reside. The latency of connection from client to server means that the user receives results much more slowly than in a traditional CAD application. A second approach is to perform all the inferencing on the client. This avoids the latency delays while inferencing, but requires a lot of data transmission pre-inferencing (all the model data needs to move from the server to the client), and requires substantial calculation (processing power) at the client. With large and complex models, this second approach does not scale effectively.
When inferences are calculated, existing geometric entities are often “snapped” to a calculated inference. SolidWorks, Creo, AutoCAD, Fusion, SolidEdge are existing systems for 2D or 3D CAD which perform snapping while inferencing during model sketching. However, all of these products have implementation on a single machine which does not scale effectively to a client-server system with high latency.
Even without inferencing, any geometric movements made while sketching can have latency and performance issues in a server-client model. When dragging entities in a sketch, typically the solver calculates new positions of geometry after every mouse move. With sufficient processing power, these calculations can be made efficiently so that even fairly big sketches can drag quickly. However, in a client-server system when those calculations are on a server, the latency of communication can greatly reduce the rate at which responses are received. For example, with a travel time between client and server of 125 ms each way it will take at least 250 ms plus calculation time to send the drag to the server and get the response back. This results in user-perceived sluggish behavior with the system (and model updates) lagging significantly behind user control.
Beyond user control and complex geometric calculations, a CAD model includes geometry of objects generated through a parametric history and the relationship between them and other objects generated by separate parametric histories. In a typical CAD model with many parts and references, these relationships are often confusing and difficult to manage. References between objects are defined in a context, usually based on a position or logical relationship in an assembly. An issue with every parametric solid modeler is that changes made to one part of a model causes unexpected behavior and failures in other parts of the model.
In the 1980's Pro/ENGINEER tried to minimize these failures by forcing users to completely define all aspects of a design. Every dimension or relationship was required to fully constrain all geometric definitions before any feature or geometric element could be created. This reduced many types of system failures, but was a burden to the user. It was also very possible to build unpredictable behavior despite the restrictions.
In 1995 SolidWorks introduced a parametric modeling system that did not require fully constrained models. It relied on a high quality variational solver from DCUBED and internal software to product a reasonably reliable system. Though better after 20 years of continued development, the system (as well as all other CAD systems) still suffers from failures and unpredictable behavior in may situations. Of particular concern are models where a change is inconsistent with it's construction. For example, if a cut that is referenced by another part is changed such that a referenced edge disappears, the generation of the referencing part will fail.
U.S. Pat. No. 8,214,423 “CAD system” (Stefan Freitag, Jul. 3, 2012) discloses, in the Abstract, “A computer aided design (CAD) system is described where each type of change in a CAD-generated object is automatically and chronologically protocoled so that the object directly includes an abstract description of the history of the object independent of the CAD module used. This is particularly advantageous with decentralized CAD systems in which several constructors/designers are working together on the same draft, but located in different places. At the end of a session, the object history, i.e., the changes which have taken place, are directly exported, together with the object data, into the destination system. The abstract description is in a form independent of the system used.” This improves 3D CAD modeling to allow collaboration across multiple CAD systems.
None of the above provides a CAD system enabling three-dimensional, multi-user CAD with online access from any platform or any device, online file storage and handling, non-lagging server-side inferencing, client-side predictive dragging, integrated branching and merging, multi-directional text, feature, and graphical editing, and management of relationships to avoid destructive changes from separate parametric histories. What is needed, therefore, is a CAD system that overcomes the above-mentioned limitations and that includes the features enumerated above.